#include <iostream>
#include <string>
#include <unistd.h>

// 先描述
class Channel
{
public:
    Channel(int wfd, pid_t who) : _wfd(wfd), _who(who)
    {
        _name = "Channel-" + std::to_string(_wfd);
    }
    std::string Name()
    {
        return _name;
    }
    void Send(int cmd) // 将任务写到自己的管道中
    {
        ::write(_wfd, &cmd, sizeof(cmd));
    }
    void Close()
    {
        ::close(_wfd);
    }
    pid_t Id()
    {
        return _who;
    }
    ~Channel() {}
private:
    int _wfd;          // 管道写端的文件描述符
    std::string _name; // 管道的名称
    pid_t _who;        // 子进程的PID
};